package leetcode.code0594;

import java.util.Arrays;

public class Solution extends Solution594 {

	@Override
	public int findLHS(int[] nums) {
		int len = nums.length;
		int ans = 0;
		Arrays.sort(nums);
		int num1 = nums[0];
		int num2 = num1 + 1;// 如果存在的话，下一个数应该是num2
		int c1 = 1;// num1数量
		int c2 = 0;// num2数量
		int cur = 0;
		for (int p = 1; p < len; p++) {
			if ((cur = nums[p]) == num1) {// 第一个数
				c1++;
			} else if (cur == num2) {// 第二个数
				c2++;
			} else {
				if (c2 != 0) {
					ans = Math.max(ans, c1 + c2);// c2!=0 要求必须有两种数
					if (cur == num2 + 1) {// c2 != 0 说明num2是真实存在的， 如果cur能和num2连起来
						num1 = num2;
						num2 = cur;
						c1 = c2;
						c2 = 1;
						continue;
					}
				}
				num1 = cur;
				num2 = num1 + 1;
				c1 = 1;
				c2 = 0;
			}
		}
		ans = c2 != 0 ? Math.max(ans, c1 + c2) : ans;// c2!=0 要求必须有两种数，数组末尾结算
		return ans;
	}

	public static void main(String[] args) {
		Solution so = new Solution();
		so.debug5();
		so.debug1();
		so.debug2();
		so.debug3();
		so.debug4();

	}

}
